package br.senac.arqpad.pizzaria.model;

import java.io.Serializable;
import java.util.List;

import br.senac.arqpad.pizzaria.dao.factory.CriadorFabricaConcreta;
import br.senac.arqpad.pizzaria.dao.factory.CriadorFabricaConcreta.TipoFabrica;

public class IngredienteFacade {

	public boolean incluir(String nome, String descricao, String medida) {

		Repository<Ingrediente> ingredientes = obterRepositorio();		
		return ingredientes.incluir(new Ingrediente(nome, descricao, medida));
	}

	public List<Ingrediente> listar() {

		Repository<Ingrediente> ingredientes = obterRepositorio();
		return ingredientes.listarTodos();

	}

	protected Repository<Ingrediente> obterRepositorio() {

		return CriadorFabricaConcreta.obterInstancia()
				.obterFabricaConcreta(TipoFabrica.Memoria)
				.obterRepositorio(Ingrediente.class);

	}

	public boolean excluir(Long parameter) {
		
		Ingrediente ingrediente = new Ingrediente();
		ingrediente.setId(parameter);
		
		Repository<Ingrediente> ingredientes = obterRepositorio();
		
		return ingredientes.excluir(ingrediente);
	}

	public Ingrediente obter(Long parameter) {

		Ingrediente ingrediente = new Ingrediente();
		ingrediente.setId(parameter);
		
		Repository<Ingrediente> ingredientes = obterRepositorio();
		
		return ingredientes.obter(ingrediente);
	}

	public boolean atualizar(String nome, String descricao,
			String medida, Serializable id) {
		
		Repository<Ingrediente> ingredientes = obterRepositorio();

		return ingredientes.atualizar(new Ingrediente(nome, descricao, medida, id));
	}
}
